#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

// struct large
// {
//     bool operator()(const int x, const int y)
//     {
//         return x > y;
//     }
// };

// int main()
// {
//     int n = 0, top = 0;

//     while(cin >> n >> top)
//     {
//         int num = 0;
//         vector<int> v(n);

//         for(int i = 0; i < n; i++)
//         {
//             cin >> num;
//             v.push_back(num);
//         }

//         sort(v.begin(), v.end(), large()); //匿名对象

//         //输出
//         for(int i = 0; i < top; i++)
//             cout << v[i] << " ";

//     }

//     return 0;
// }

int main() {
	int n, m; //好人和坏人的人数, 2n个人; 步长m 
	vector<int> table;
	while (cin >> n >> m) {
		table.clear(); 
		for (int i = 0; i < 2 * n; i++) table.push_back(i); //初始化 
		int pos = 0; //数数开始位置0; 当前位置p 
		for (int i = 0; i < n; i++) { //赶走n个坏人 
			//从上一次的开始位置走m步, 取余处理 
			pos = (pos + m - 1) % table.size(); 
			table.erase(table.begin() + pos); //删除坏人 
		}
		int j = 0;
		for (int i = 0; i < 2 * n; i++) { //打印好人和坏人的座位 
			if (!(i % 50) && i) cout << endl; //50字母为1行 
			if (j < table.size() && i == table[j]) { //table留下的都是好人 
				j++; cout << "G"; //j顺势扫描table 
			} else cout << "B"; 
		} 
		cout << endl << endl; //留一个空行 
	}
	return 0;
}
